package com.zmn.oms.persistence.interfaces.master;

import com.zmn.oms.model.entity.master.OrderMaster;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface OrderMasterDao {

    /**
     * 通过订单Id的集合查询
     *
     * @param orderIdList
     * @return
     */
    List<OrderMaster> listMasterByOrderIdList(@Param("orderIdList") List<Long> orderIdList);

    /**
     * 通过主键查询
     *
     * @param orderId
     * @param workId
     * @param type
     * @return
     */
    List<OrderMaster> listMasterByKey(@Param("orderId") Long orderId, @Param("workId") Long workId, @Param("type") Integer type);

    /**
     * 通过工程师id列表查询工程师列表
     *
     * @param workId 工单id
     * @return 工程师列表
     */
    List<OrderMaster> listMasterByMasterIdList(@Param("orderId") Long orderId, @Param("workId") Long workId, @Param("masterIdList") List<Integer> masterIdList);

    /**
     * 新增
     *
     * @param orderMaster
     * @return
     */
    int insert(OrderMaster orderMaster);

    /**
     * 批量新增
     *
     * @param orderMasterList
     * @return
     */
    int insertAll(@Param("orderMasterList") List<OrderMaster> orderMasterList);

    /**
     * 删除工程师
     *
     * @param orderId 订单ID
     * @param workId  工单ID
     * @param type    类型
     */
    int deleteMaster(@Param("orderId") Long orderId, @Param("workId") Long workId, @Param("type") Integer type);

    /**
     * 删除工程师
     *
     * @param orderId 订单ID
     * @param workId  工单ID
     * @param masterId  工程师ID
     */
    int deleteMasterByMasterId(@Param("orderId") Long orderId, @Param("workId") Long workId, @Param("masterId") Integer masterId);

    /**
     * 根据工程师ID列表删除
     *
     * @param orderId         订单ID
     * @param workId          工单ID
     * @param type            类型
     * @param masterIdList    工程师ID列表
     */
    int deleteMasterByMasterIdList(@Param("orderId") Long orderId, @Param("workId") Long workId, @Param("type") Integer type, @Param("masterIdList") List<Integer> masterIdList);

    /**
     * 更新工程师分润信息
     *
     * @param master         工程师信息
     */
    int updateMasterShare(OrderMaster master);
}